Experience Report: Speeding up a Nested VM Using Bytecode Comp
نویسندگان
چکیده
The focus of this paper is Weld, a bytecode compiler that compiles a given Java class into a new Java class with added compiled methods. The Java bytecode to Java bytecode compilation that Weld performs is key to accelerating Rivet, a Java virtual machine written in Java that serves as an extensible tool platform. In accelerating Rivet, Weld employs several bytecode compilation techniques. Some of these techniques resulted in significant speedup, while other techniques were less successful. The Rivet JVM was designed and implemented at MIT from the summer of 1998 through the spring of 1999. Rivet is a platform for debugging and testing tools that is structured as a Java Virtual Machine. The Java platform was chosen for Rivet's implementation because of its characteristic clarity, facility, and portability. Unlike the Java VM developed in the Jalapeno project [1], which was written in Java but designed to run on top of bare hardware, Rivet was designed to run on top of an underlying Java VM. The Java VM on top of which Rivet runs is referred to in this paper as the lower-level JVM, while the programs that run on top of Rivet are referred to as client programs. The nested virtual machine design enabled Rivet to be portable and to reuse the Java APIs implemented by the lower-level JVM. Because Rivet's goal was to support tools, clarity and extensibility initially took priority over performance in Rivet’s design. Thus, Rivet started out as a pure interpreter, effectively built around a bytecode dispatching case statement. Performance tests revealed that Rivet spent 70% of its time in this dispatch loop. This result indicated that bytecode compilation offered the possibility of dramatically improving Rivet’s performance. Weld was designed in pursuit of this goal, and also with careful attention to clean and simple integration with Rivet.
منابع مشابه
Formal Certification of Android Bytecode
Android is an operating system that has been usedin a majority of mobile devices. Each application in Androidruns in an instance of the Dalvik virtual machine, which isa register-based virtual machine (VM). Most applications forAndroid are developed using Java, compiled to Java bytecodeand then translated to DEX bytecode using the dx tool inthe Android SDK. In this work,...
متن کاملPredictors of speeding among drivers based on Prototype Willingness Model
Background: Every year 1.2 millions of people are killed in road accident, and speeding is a major contributor road crashes among young driver. Accounting 40% of fatal crashes involved speeding. The purpose of this study was determining predictor of speeding intention among young driver 19-25 years old young driver in ghaemshahr based on Prototype Willingness Model. Materials and methods: I...
متن کاملMixed mode execution with context threading
Interpreters are widely used to implement portable language runtime environments. Programs written in these languages may benefit from performance beyond that obtainable by optimizing interpretation alone. A modern high-performance mixed-mode virtual machine (VM) includes a method-based Just In Time (JIT) compiler. A method-based JIT, however, requires the up-front development of a complex comp...
متن کاملJava mobile code
Supplementary section for Understanding Networked Applications: A First Course, Morgan Kaufmann, 1999. Copyright notice: Permission is granted to copy and distribute this material for educational purposes only, provided that this copyright notice remains attached. An illustrative example of MC middleware is Java from Sun Microsystems [Arn96][Fla96]. Java is several things. First and foremost, i...
متن کاملUsing the ASM framework to implement common Java bytecode transformation patterns
Most AOP frameworks targeting the Java platform use a bytecode weaving approach as it is currently considered the most practical solution. It allows applying cross-cutting concerns to Java applications when source code is not available, is portable and works on existing JVMs, in comparison to VM-level AOP implementations. Load-time bytecode weaving (LTW), which happens right before the applicat...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1999